/*  ----------------------------------------------------------------------------
 *  Arello Mobile
 *  Fast 3d Engine
 *  ----------------------------------------------------------------------------
 * Except where otherwise noted, this work is licensed under
 * http://creativecommons.org/licenses/by/3.0
 */

#ifndef __INPUT_HARD_HARDWARE_H__
#define __INPUT_HARD_HARDWARE_H__

#include <filesystem/String.hpp>
#include <input/Manager.h>

namespace liba
{
namespace input
{
namespace hard
{
class ForceEffect;

class Hardware
{
public:
	Hardware()
	{
		Manager::add_hardware( this );
	}
	virtual ~Hardware()
	{
		Manager::remove_hardware( this );
	}
	virtual std::string get_name()const=0;
	virtual Atom get_type()const=0;
	virtual double get_axis_position( const std::string & axis_name )const=0;
	virtual Manager::AxisType get_axis_type( const std::string & axis_name )const=0;

	virtual hard::ForceEffect * create_force_effect( const filesystem::String & effect_name )
	{
		return 0;
	}
};

} // namespace hard
} // namespace input
} // namespace liba
using namespace liba;

#endif //__INPUT_HARD_HARDWARE_H__